/*
 * Clase contenedora de datos de la tabla tipo_atributo
*/
package pojos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/** 
 * @author seiloprub 
 */

public class TipoAtributo implements Pojo{

    private int id;
    // Atributos
    private String tatr_nombre;
    private String tatr_tipo_dato;
    
    public TipoAtributo(int id, String tatr_nombre, String tatr_tipo_dato) {
          darValores(id, tatr_nombre, tatr_tipo_dato);
    }
    
    public TipoAtributo(String tatr_nombre, String tatr_tipo_dato) {
          darValores(-1, tatr_nombre, tatr_tipo_dato);
    }
    
    private void darValores(int id, String tatr_nombre, String tatr_tipo_dato) {
        this.id=id;
        this.tatr_nombre=tatr_nombre;
        this.tatr_tipo_dato=tatr_tipo_dato;
    }
    
    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @return the nombre
     */
    public String getTatr_nombre() {
        return tatr_nombre;
    }
    
    /**
     * @return the tipo_dato
     */
    public String getTatr_tipo_dato() {
        return tatr_tipo_dato;
    }
    
    /**
     * guarda y actualiza el tipo de atributo
     */
    @Override
    public int guardar(Connection con) {
        int count=0;       
        if(this.id==-1) {
            //INSERTAR            
            String sql="INSERT INTO tipo_atributo(tatr_nombre, tatr_tipo_dato) "
                    + "VALUES(?,?)";
            PreparedStatement stmt=null;
            try {
                stmt=con.prepareStatement(sql);
                //poner los valores
                stmt.setString(1, this.getTatr_nombre());
                stmt.setString(2, this.getTatr_tipo_dato());
                // ejecutar
                count=stmt.executeUpdate();
            } catch (SQLException ex) {
                Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                try {
                    if (stmt!=null) {
                        stmt.close();
                    }
                } catch (SQLException ex) {
                    Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        } else {
            //ACTUALIZAR
            String sql="UPDATE tipo_atributo SET tatr_nombre=?, tatr_tipo_dato=?"
                        + " WHERE id=?";
            PreparedStatement stmt=null;
            try {
                stmt=con.prepareStatement(sql);
                //poner los valores
                stmt.setString(1, this.getTatr_nombre());
                stmt.setString(2, this.getTatr_tipo_dato());
                stmt.setInt(3, this.getId());
                // ejecutar
                count=stmt.executeUpdate();
            } catch (SQLException ex) {
                Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                try {
                    if (stmt!=null) {
                        stmt.close();
                    }
                } catch (SQLException ex) {
                    Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }       
        return count;
    }
    
    /**
     * borra el tipo de atributo
     */
    @Override
    public int borrar(Connection con) {
        int count=0;
        String sql="DELETE FROM tipo_atributo WHERE id=?";
        PreparedStatement stmt=null;
        try {
            stmt=con.prepareStatement(sql);
            //poner los valores
            stmt.setInt(3, this.getId());
            // ejecutar
            count=stmt.executeUpdate();            
        } catch (SQLException ex) {             
            Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
        } finally {            
            try {
                if(stmt!=null) {
                    stmt.close();
                }                
            } catch (SQLException ex) {
                Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
            }     
        }
        return count;
    } 
}
